#include "Timer.h"
#include "DM.h"

//----------------------------------------------------------------------------------------------------------//
class Arc_C
{
    public:
        vector<float> _vInputTrans;
        vector<double> _vDelayFromPin;
        vector<string> _vNameFromPin;
        string _nameToPin;
        LibCell_C* _pLibCell;
};
//----------------------------------------------------------------------------------------------------------//
class Timer_C::Imp_C
{
    public: //data
        DMMgr_C* _pDMMgr;
        Arc_C* _pArc;
        vector<vector<pair<BoundaryNode_C*,float> > > _vvTrans;
        vector<vector<pair<BoundaryNode_C*,float> > > _vvDelay;

    public: //function
        Imp_C(DMMgr_C* p_pDMMgr);
        void calcNet(Net_C* p_pNet,Timer_C::TransType_E p_eInputTrans);
        void prepareArcInfo(BoundaryNode_C* p_pFromNode,TransType_E p_eInputTrans);
        void estimateTiming_allArcs(Net_C* p_pNet,TransType_E p_eInputTrans);
        void worstPropagation(TransType_E p_eInputTrans);
        void calcSlack();
        
        Timer_C::PTime_Status runPTime(); //timer_interface.h timer_interface.cpp runPTime.cpp 
        void parseTiming();
};
//----------------------------------------------------------------------------------------------------------//
